/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package comp.racer.common.interfaces;


import comp.racer.common.rn.CompRacerException;
import comp.racer.common.rn.Jogador;
import java.net.MalformedURLException;
import java.rmi.NotBoundException;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.List;
import comp.racer.common.so.Localizador;
import java.util.Map;

/**
 *
 * @author david
 */
public interface ServidorIF extends Remote{

    public void realizaConexao(Localizador clienteLocalizador) throws RemoteException, NotBoundException, MalformedURLException;

    public void realizaDesconexao(Localizador clienteLocalizador) throws RemoteException;

    public Map<String, Jogador> validaEntradaSalaDeEspera(Localizador clienteLocalizador, String clienteLogin) throws RemoteException, CompRacerException;

    public void notificaMudancaDeEstado(String clienteLogin) throws RemoteException ;

    public void notificaProgressoJogador(Jogador jogador, int numCaracteresCorretos) throws RemoteException;

    public void notificaSaidaJogador(Jogador jogador) throws RemoteException;

    public List<Jogador> obtemRanking() throws RemoteException ;

    // getters e setters
    public Localizador getLocalizador() throws RemoteException;

    public void setLocalizador(Localizador localizador) throws RemoteException;
    
}
